import java.util.Vector;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem;


public class SeccionCompuesta extends Seccion{
	
	private Vector<Seccion> subSecciones;
	
	public SeccionCompuesta(){
		subSecciones = new Vector<Seccion>();
	}
	
	
	public void addSeccion(Seccion s){
		subSecciones.add(s);
	}
	
	public void removeSeccion(Seccion s){
		subSecciones.remove(s);
	}

	@Override
	protected boolean isSeccionSimple() {
		return false;
	}


	@Override
	protected Seccion parse(PDOutlineItem item, PDDocument doc, PDOutlineItem tope) {
		try {
			if(item != null){	
				Seccion s = null;
				PDOutlineItem aux = null;
				if(item.getFirstChild() != null){
					s = new SeccionCompuesta();
					aux = item.getFirstChild();
					int pageChild = s.getPage(item.getFirstChild(), doc);
					int inicialPage = Integer.parseInt(s.getPaginaInicial());
					if(inicialPage < pageChild){
						s.setTexto(inicialPage, doc, pageChild);
					}
				}else{
					s = new Item();
					aux = item;
				}
				s.setName(item.getTitle());
				s.setPaginaInicial(item, doc);
				s.setPaginaFinal(item, doc, tope);
				subSecciones.add(s.parse(aux,doc, item.getNextSibling()));
				
				parse(item.getNextSibling(),doc, tope);			
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return this;
	}

	@Override
	protected String read() {
		String text = "";
		for (Seccion subsSeccion : subSecciones) {
			String textSeccion = "";
			if(subsSeccion.getTexto() != null){
				textSeccion = this.getTexto();
			}
			text = text + '\n' + textSeccion + '\n' + subsSeccion.read();			
		}
		return text;
	}

}
